/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package stubs.negocio;
import java.util.ArrayList;
import interfaces.IGerenciaCidade;
import entidades.Cidade;
import erros.ErroAtualizacao;
import erros.ErroCadastramento;
import erros.ErroRecuperacao;
import erros.ErroRemocao;

/**
 * Stub simula a controladora gerencia cidade.
 * @author thiagostuckert
 */
public class StubCntrGerenciaCidade implements IGerenciaCidade {
    /**
     * Constante simula nome da cidade cuja as ações serão realizadas com
     * sucesso.
     */
    private static final String NOME_CIDADE_SUCESSO = "Floripa";
    /**
     * Constante simula sucesso.
     */
    private static final int SUCESSO_RECUPERAR_CIDADES = 1;

    /**
     * Recupera todas as cidades do banco.
     * @return lista lista de cidades armazenadas no banco.
     * @throws ErroRecuperacao erro lançado caso a ação não obtenha sucesso.
     */
    @Override
    public ArrayList recuperarCidades() throws ErroRecuperacao{
        int sucesso = 1;
        /*Devo testar quando nao consegue recuperar do banco tb*/
        if(sucesso == SUCESSO_RECUPERAR_CIDADES){
            ArrayList listaCidades = new ArrayList();
            listaCidades.add(new Cidade("Floripa"));
            listaCidades.add(new Cidade("Brasilia"));
            listaCidades.add(new Cidade("Goiania"));
            return listaCidades;
        }else return null;
    }
    /**
     * Cadastra a cidade representada pelo objeto cidade passado como parametro.
     * @param cidade objeto a ser cadastrado.
     * @throws ErroCadastramento erro lançado caso a ação não
     * obtenha sucesso.
     */
    @Override
    public void cadastrarCidade(Cidade cidade) throws ErroCadastramento{
        if(!cidade.getNomeCidade().equals(NOME_CIDADE_SUCESSO)){
            throw new ErroCadastramento("Erro no cadastramento da cidade.");
        }
    }
    /**
     * Atualiza a ciadade velha pela cidade nova no banco.
     * @param cidadeVelha cidade a ser atualizada.
     * @param cidadeNova ciadae nova.
     * @throws ErroAtualizacao erro lançado caso a ação não obtenha sucesso.
     */
    @Override
    public void atualizarCidade(Cidade cidadeVelha,Cidade cidadeNova)
            throws ErroAtualizacao{
        if(!cidadeVelha.getNomeCidade().equals(NOME_CIDADE_SUCESSO)){
            throw new ErroAtualizacao("Erro na atualizacao da cidade.");
        }else {
            cidadeVelha.setNomeCidade("Rio de Janeiro");
        }
    }
    /**
     * Deleta a cidade representada pelo objeto cidade passado como parametro.
     * @param cidade cidade a ser removida.
     * @throws ErroRemocao erro lançado caso a ação não obtenha sucesso.
     */
    @Override
    public void deletarCidade(Cidade cidade) throws ErroRemocao{
        if(!cidade.getNomeCidade().equals(NOME_CIDADE_SUCESSO)){
            throw new ErroRemocao("Erro ao tentar deletar a cidade.");
        }
    }
}
